Injecting targeted ads into videos

ABSTRACT

Methods and systems for inserting targeted advertisements into video content. One or more embodiments analyze video content to identify media insertion locations on digital object surfaces for inserting advertisements. Additionally, one or more embodiments select advertisements to insert into the video content at the media insertion locations based on the media insertion locations, a viewer, or a viewing device of the viewer. One or more embodiments also digitally insert the advertisements into the video content by placing the selected advertisements at the media insertion locations corresponding to the digital object surfaces. One or more embodiments then provide the video content with the targeted advertisements to the viewing device of the viewer.

BACKGROUND

The availability and consumption of digital video content continues toincrease as the prevalence of smartphones and other devices capable ofdisplaying digital video increases. With the increased consumption ofdigital video content comes more opportunities for advertisers topromote their brands or products. Specifically, users can use theirdevices to download and/or stream movies, television shows,user-generated videos, or other types of digital video content. Byleveraging the many different types of video content available,advertisers or other entities can promote brand awareness to largenumbers of people.

Many advertisements, however, are disruptive and interrupt theexperience of the user. For example, conventional advertising systemsthat provide targeted advertising to viewers of a digital videotypically interrupt the video to provide a commercial, popupadvertisement, or overlay on top of a digital video player that includescontent related to the viewers' interests. Interrupting a video toprovide an advertisement, not only interrupts the video but alsoeffectively lengthens the time required to view the video. Becauseconventional advertising systems interrupt the viewing experience,viewers can have a negative reaction to the advertisements, particularlyas viewers become more accustomed to watching digital video withoutadvertising breaks (e.g., due to digital video recording capabilitiesand digital video subscriptions).

To provide advertisements without interrupting the experience of theuser, many advertisers use product placement or background advertisingin videos. For example, instead of stopping a video to display anadvertisement, some video advertising methods use product placement toinsert products into a video in a way that highlights the product to theuser. Examples of the foregoing include having an actor drive aparticular brand of car, having an actor wear particular articles ofclothing, placing objects within scenes to be included in the video,etc.

One will appreciate that this type of product placement/advertisingrequires that the products/advertisements are included within a scene tobe captured in the video prior to the filming of the video. Accordingly,the advertisements are the same for everyone viewing the digital video.Furthermore, the advertisements or products placed cannot be changedafter the video is produced. Thus, such advertisements are often out ofdate or not relevant to the audience or viewer of the video. Moreover,such advertising is static with no immediate conversion possible. Theseand other disadvantages may exist with respect to conventionaladvertising techniques in connection with digital videos.

BRIEF SUMMARY

Embodiments of the present disclosure provide benefits and/or solve oneor more of the foregoing or other problems in the art with systems,computer-readable media, and methods that digitally augment sceneswithin previously generated video content with digital visual media(e.g., targeted advertisements). In one or more embodiments, thesystems, computer-readable media, and methods analyze video content todetermine one or more locations on digital objects within the video forinserting advertisement media (e.g., static and/or video media) into thevideo content. The systems, computer-readable media, and methods selectadvertisements to insert into the video content based on characteristicsof the locations, viewers of the video content, or viewing devices thatthe viewers use to view the video content. The systems,computer-readable media, and methods then augment the video content bydigitally insert the advertisements into the video content at thepreviously identified locations within the video content. Accordingly,the systems and methods can provide video content to viewers withtargeted advertisements that have been digitally inserted into the videocontent.

Additional features and advantages of one or more embodiments of thepresent disclosure will be set forth in the description which follows,and in part will be obvious from the description, or may be learned bythe practice of such example embodiments.

BRIEF DESCRIPTION OF THE DRAWINGS

Various embodiments will be described and explained with additionalspecificity and detail using the accompanying drawings in which:

FIG. 1 illustrates an example computing environment within which adigital advertisement management system with a video augmenter canoperate in accordance with one or more embodiments;

FIGS. 2A-2B illustrate a sequence-flow diagram illustrating interactionsas part of a process for augmenting video content with digital visualmedia in accordance with one or more embodiments;

FIGS. 3A-3D illustrate example user interfaces for inserting digitalvisual media into locations within video content in accordance with oneor more embodiments;

FIGS. 4A-4C illustrate example user interfaces for presenting videocontent augmented with digital visual media in accordance with one ormore embodiments;

FIG. 5 illustrates a flowchart of an example algorithm of augmentingvideo content with digital visual media in accordance with one or moreembodiments;

FIG. 6 illustrates a flowchart of a series of acts of augmenting videocontent by inserting advertisements into the video content in accordancewith one or more embodiments;

FIG. 7 illustrates a schematic diagram of a digital advertisementmanagement system with a video augmenter in accordance with one or moreembodiments; and

FIG. 8 illustrates a block diagram of an exemplary computing device inaccordance with one or more embodiments.

DETAILED DESCRIPTION

One or more embodiments of the present disclosure provide a digitaladvertisement management system including a video augmenter thatdigitally augments scenes within previously generated video content withdigital visual media, such as targeted advertisements. Morespecifically, the video augmenter analyzes video content to findlocations within the video content for inserting targetedadvertisements. The video augmenter selects advertisements based on aviewer, the viewer's device, and/or the locations for inserting theadvertisements into the media content at the locations. The videoaugmenter then digitally inserts the selected advertisements into thevideo content at the identified locations. The digital advertisementmanagement system then provides the video content with theadvertisements to the viewer. Thus, as the viewer watches the videocontent, the video content will seamlessly display the targetedadvertisements as though the advertisements were originally part of thevideo content.

For example, when a viewer requests to view video content from a contentprovider on a client device, one or more embodiments analyze the videocontent to determine media insertion locations within the video contentsuitable for inserting a targeted advertisement. Specifically, thelocations can be manually indicated locations or automaticallyidentified locations that include sufficient surface space on a digitalobject within the video content. For instance, an advertiser or acontent provider can manually select locations within the video content.Alternatively, the digital advertisement management system can use imageprocessing techniques to recognize shapes and surfaces within the videocontent that include dimensions capable of displaying a targeted videoor image advertisement.

After identifying media insertion locations in the video content, thedigital advertisement management system selects advertisements thatcorrespond to the media insertion locations for the viewer. Inparticular, for a given media insertion location, the digitaladvertisement management system determines characteristics of thelocation, the viewer, and/or the viewer's device to select anadvertisement to insert into the video content. For example, the digitaladvertisement management system uses a viewer profile or a viewer deviceidentifier to determine an advertisement in which the viewer may beinterested. Additionally, the digital advertisement management systemselects an advertisement that fits, or can be adapted to fit, withindimensions of the corresponding location within the video content.

The video augmenter then inserts selected advertisement into thecorresponding media insertion location within the video content. Thevideo augmenter can use a variety of techniques to insert theadvertisement into a location on an object/surface within the videocontent. For example, the video augmenter can insert interactive staticadvertisements and/or video advertisements into the video content byplacing the static/video advertisements at a set of coordinatescorresponding to a media insertion location in each frame of the videocontent. Accordingly, even if the position of the objects correspondingto the media insertion locations change with respect to a field of viewof the viewer, the advertisements will move with the objects to whichthey are pinned.

The video augmenter can determine the set of coordinates correspondingto a media insertion location by analyzing the video content usingmotion tracking techniques. For example, the video augmenter canidentify a set of coordinates within the video content corresponding toedges or corners of the object (e.g., automatically or in response to auser input). The video augmenter can then use motion tracking processesto determine a path of the object surface across a plurality of framesof the video content. The video augmenter can then determine thecoordinates of the edges or corners of the object in each of theplurality of frames using the determined path and then insert theadvertisement at the determined coordinates in each corresponding frame.

As described herein, the video augmenter provides advantages overconventional advertising systems. Specifically, the video augmenterimproves technological processes related to advertising within digitalvideo content by seamlessly augmenting previously generated videocontent with advertisements. Thus, video content augmented by the videoaugmenter can include timely and targeted advertisements even in oldervideo content. Thus, the video augmenter provides greater flexibility inserving digital advertisements in connection with video content thanconventional systems.

Furthermore, augmenting the digital video content itself, the videoaugmenter can provide advertisements in connection with video contentwithout effectively increasing a time required to watch the videocontent. The video augmenter seamlessly inserts advertisements ontosurfaces of objects within the digital video content itself; and thus,provides augmented video content augmented with advertisements withoutdisrupting the video content. Whereas conventional advertising disruptsthe viewer experience by providing advertisements with video content byinserting advertisements at ad breaks or as overlays on top of the videocontent.

Additionally, the video augmenter improves the technological processrelated to advertising with video content by enabling interactiveadvertisements within previously generated video content. In particular,the video augmenter leverages location information associated withobjects in the video content to insert interactive elements includingadvertisements that track or move with the objects. For example, theadvertisement can comprise scripts that cause a webpage, applicationstore, or other information to open when the viewer select (e.g., clickson or taps on) the advertisement within the video content. This canallow the user to navigate directly to a forum in which they canconvert. Thus, the video augmenter can improve the performance of aviewer's device to allow the viewer to interact with the advertisementswithin video content in ways that conventional advertising systems areunable to achieve.

Furthermore, the video augmenter can allow more accurate reporting ofadvertisement statistics across a plurality of client devices andmediums. Specifically, by placing targeted advertisements within videocontent that has been previously generated, the video augmenter canallow the digital advertisement management system to verify or trackeach time an advertisement is used. Accordingly, the digitaladvertisement management system can more accurately track and report onadvertisement usage, impressions, conversion, etc.

As used herein, the terms “advertisement” and “ad” refer to a digitalvisual media (an image, a video, an animation, etc.) that includesinformation about a brand or product/service. For example, anadvertisement can include a digital video/image promoting a product orservice related to an advertising entity. The digital advertisementmanagement system can manage advertisements from a plurality ofadvertisers and select advertisements to insert into video content.

As used herein, the term “video content” refers to digital video that aviewer can view on a client device. For example, video content caninclude digital video that a viewer downloads, streams, or otherwiseaccesses on a client device. To illustrate, video content can include,but is not limited to, video clips, television shows, movies, 360 degreevideos, virtual reality environments, video gaming environments, etc.

As used herein, the terms “media insertion location” and “location”refer to a visual position within video content on which the videoaugmenter places an advertisement. For example, a media insertionlocation can include a surface of a digital object within video content.

As used herein, a “digital object” refers to a visual object that ispart of the video content. Specifically, a digital object is an objectcaptured by a camera device or created by a computing device and isvisible within one or more video frames of video content. To illustrate,an object can include a billboard, a storefront, a vehicle, or any othervisual item that includes a surface where the video augmenter may placean advertisement.

As used herein, the term “advertiser system” refers to an entity thatprovides advertisements for display with media content. For example, anadvertiser system can include an individual advertiser that createsand/or provides advertisements for display within video content on userclient device(s). Alternatively, an advertiser system can include agroup of advertisers that create and/or provide advertisements fordisplay within media content on user client device(s).

As used herein, the term “content provider system” refers to a systemthat provides media content for display at user client device(s).Specifically, a content provider system can include a system thatgenerates video content or other media content to provide one or moreusers. The content provider system can be associated with a mediastreaming service or other media viewing service that allows users toaccess video content to view on their own devices. Alternatively, acontent provider system can be a media content aggregator that receivescontent generated by one or more other systems and then provides theaggregated media content to users.

As used herein, the term “digital advertisement management system”refers to a system that manages the augmentation of video content withadvertisements to provide to user client devices. Specifically, adigital advertisement management system can communicate with contentproviders to access video content and identify one or more mediainsertion locations within the video content. A digital advertisementmanagement system can also communicate with advertiser systems to accessadvertisements to select advertisements for augmenting the videocontent. A digital advertisement management system can also augmentaccessed video content with retrieved advertisements. Furthermore, adigital advertisement management system can include one or morecomputing devices to perform video content augmentation processes andfor providing augmented video content to user client devices.

As used herein, the term “administrator device” refers to a device thatallows an administrator user to provide advertisements within videocontent. Specifically, the administrator device can include a desktopdevice, a laptop device, a handheld device, or other computing devicethat allows an administrator to select, view, and/or modify mediainsertion locations within video content. Alternatively, theadministrator device can include a computing device that allows anadministrator to manage the insertion of advertisements into videocontent for automated media insertion location identification (e.g.,access and manage analytics data or other data maintained by the digitaladvertisement management system).

As used herein, the term “client device” refers to a computing devicethat allows a user to view media content including advertisements. Inparticular, a client device includes a desktop device, a laptop device,a handheld device, or other computing device that allows a user toaccess video content from a content provider system. Additionally, aclient device is capable of communicating with advertiser systems toaugment video content with advertisements from one or more advertisers.For example, a client device can run one or more applications to allow auser to view augmented video content in one or more environments.

A media insertion location can also include dimension and locationparameters that allow the video augmenter to accurately locate the mediainsertion location relative to other visual objects within videocontent. The dimension parameters can include shape and size informationto define the boundaries of the media insertion location. Additionally,the location parameters can include a set of coordinates that describethe position of the media insertion location for each video frame of thevideo content.

As described briefly above, the video augmenter augments video contentby inserting targeted advertising into identified locations within videocontent. FIG. 1 illustrates an example environment 100 in which adigital advertisement management system including a video augmenterdetermines locations for inserting advertisements into video content,selects advertisements, and then augments the video content with theadvertisements. The environment 100 includes a viewer 102 operating aclient device 104 (or “viewing device”), an administrator 106 operatingan administrator device 108, one or more server(s) 110, an advertisersystem 112, and a content provider system 114. The client device 104,the administrator device 108, the server(s) 110, the advertiser system112, and the content provider system 114 can communicate with each othervia a network 116.

Each of the client device 104, the administrator device 108, theserver(s) 110, the advertiser system 112, and the content providersystem 114 can include one or more software components. As illustrated,the server(s) 110 can include or implement a digital advertisementmanagement system 122 including a video augmenter 124. The client device104 includes a client application 118 that allows the viewer 102 to viewand interact with video content and/or other media content on the clientdevice 104. As illustrated, the client application 118 can run on theclient device 104 to provide video content and advertisements to theviewer 102. The client application 118 can allow the viewer 102 tocommunicate with the content provider system 114 to retrieve videocontent. The client device 104 can download or stream video contentprovided by the content provider system 114. Additionally, the contentprovider system 114 and/or the client device 104 can communicate withthe server(s) 110 in connection with the retrieval of the video content.As described in more detail below, video augmenter 124 implemented bythe server(s) 110 perform operations associated with selecting andinserting advertisements into video content that the viewer 102requests.

The administrator device 108 allows the administrator 106 to interactwith video content from the content provider system 114 to select mediainsertion locations within the video content. The administrator 106 canbe associated with the content provider system 114 or the advertisersystem 112. The administrator 106 can use an administrator application120 on the administrator device 108 to access video content to identifyand select one or more media insertion locations. Additionally, thevideo augmenter 124 can automatically identify media insertion locationsin video content using image processing techniques. The administratordevice 108 can then communicate with the server(s) 110 to provideinformation about the media insertion locations.

In one or more embodiments, the server(s) 110 includes a digitaladvertisement management system 122 that identifies requests to retrievevideo content from the content provider system 114. The digitaladvertisement management system 122 can communicate with the advertisersystem 112 to obtain and store advertisements (or access locations ofthe advertisements) to insert into video content from the contentprovider system 114. In response to receiving an indication that theviewer is requesting video content from the content provider system 114,the video augmenter 124 accesses the video content to identify one ormore media insertion locations within the video content for insertingadvertisements.

The digital advertisement management system 122 can communicate with oneor more components of the environment 100 to obtain information forselecting an advertisement. After identifying a media insertion locationwithin the video content and selecting an advertisement, the videoaugmenter 124 augments the video content by inserting the advertisementinto the video content. In particular, the video augmenter 124 digitallyinserts the advertisement onto an object within the video content at theidentified location. The video augmenter 124 uses coordinates of thelocation to “pin” the advertisement to the corresponding object in eachframe of the video content. Thus, as the object moves within the videocontent, the advertisement follows the object to make the advertisementappear to be part of the original video content.

In one or more embodiments, the administrator application 120 includesan application that is implemented as a stand-alone application, such asa desktop or mobile application, or as one or more web-basedapplications hosted on a remote server. Furthermore, the administratorapplication 120 may be implemented in a suite of mobile deviceapplications or “apps.” The digital advertisement management system 122can similarly include one or more applications associated with providingvideo content with targeted advertisements. To illustrate, the suite ofapplications can include one or more applications such as, but notlimited to, applications in ADOBE® MARKETING CLOUD® and ADOBE® TARGET®.“ADOBE”, “MARKETING CLOUD”, and “TARGET” are registered trademarks ofAdobe Systems Incorporated in the United States and/or other countries.

Although the environment 100 in FIG. 1 illustrates a specificconfiguration of hardware and software, the environment 100 can includeother configurations of hardware and/or software. For example, theenvironment 100 may include any number of additional or alternativecomponents (e.g., any number of client devices, servers, or third-partyentities/components). To illustrate, the digital advertisementmanagement system 122 may be implemented in a distributed serverenvironment (e.g., in a cloud storage system) that allows anadministrator to insert targeted advertisements into video content andprovide the video content to viewers. In one or more alternativeembodiments, the digital advertisement management system 122 runs on asingle computing device such that the administrator client device 108can perform all of the operations associated with insertingadvertisements into previously generated video content, includinggenerating and providing content to a viewer. Additionally, the digitaladvertisement management system 122 may be implemented as one or moreoperating systems, in one or more stand-alone applications, as one ormore modules of an application, as one or more plug-ins, as one or morelibrary functions or functions that may be called by other applications,and/or as a cloud-computing model.

Although FIG. 1 illustrates client device 104 in communication with theserver(s) 110, the server(s) 110 may communicate with any number ofclient devices to provide video content augmented with targetedadvertisements to a plurality of different viewers. Furthermore,although FIG. 1 illustrates a single administrator client device 108,advertiser system 112, and content provider system 114 in communicationwith the digital advertisement management system 122 via the network116, the digital advertisement management system 122 can communicatewith any number of advertisers, content providers, and administrators inconnection with providing targeted advertisements in video content toviewers. Additionally, while FIG. 1 illustrates certain detailsassociated with various devices and components associated with thedigital advertisement management system 122 and the video augmenter 124,FIG. 7 and the accompanying description detail additional components andfunctionalities of the digital advertisement management system 122 andthe video augmenter 124 in more detail.

According to one or more embodiments, the client device 104 includes acomputing device that is capable of providing a video viewingenvironment (e.g., a video player, web browser, VR environment) inconnection with the client application 118. For instance, the clientdevice 104 can include a desktop computing device, laptop computingdevice, or handheld computing device (e.g., a mobile phone or tablet).Similarly, the administrator device 108 can include a desktop computingdevice, laptop computing device, or handheld computing device capable ofproviding an interface for selecting media insertion locations intovideo content in connection with the administrator application 120. Theclient device 104 and the administrator device 108 can comprisecomputing devices that include the additional components as described inmore detail below with respect to FIG. 7. Additionally, inputs to theclient device 104 and the administrator device 108 can include, but arenot limited to, peripheral devices (e.g., a mouse or touchpad) or atouchscreen input.

Similarly, the server(s) 110 can include any type of computing devicecapable of implementing one or more components of the digitaladvertisement management system 122 and the video augmenter 124 ofFIG. 1. For example, the server(s) 110 can implement the digitaladvertisement management system 122 in a cloud storage system or otherdistributed storage system that allows users to access video contentwith targeted advertisements from any device. The server(s) 110 can alsoinclude an advertisement repository and/or content repository to hostadvertisements and/or video content for providing to the client device104. Alternatively, the digital advertisement management system 122 canaccess advertisement/content repositories at the advertiser system 112and content provider system 114, respectively, each time a viewerrequests to view video content.

As described previously, the video augmenter 124 can analyze videocontent requested by a viewer to identify a media insertion location,select an advertisement, and digitally insert the advertisement into thevideo content at the media insertion location. In one or moreembodiments, the insertion occurs prior to delivering previouslygenerated video content to the viewer's device. In one or morealternative embodiments, the digital advertisement management systeminserts the advertisements in real-time as the viewer streams videocontent on the viewer's device. FIGS. 2A-2B illustrate an advertisementinsertion workflow involving augmenting video content with static and/orvideo advertisements. As described in more detail below, FIGS. 2A-2B andthe accompanying description illustrate a process for identifyingspecific locations within video content for inserting advertisements ina way that is nonintrusive and seamless.

With reference now to FIG. 2A, a process diagram includes advertisersystem 112, server(s) 110 with the digital advertisement managementsystem 122 and the video augmenter 124, content provider system 114, andclient device 104 with client application 118. Specifically, the clientapplication 118 can provide an interface for a user to access and watchvideo content on the client device 104. For example, the user can accessvideo content provided by the content provider system 114. As describedbelow, the video augmenter 124 facilitates the insertion ofadvertisements from the advertiser system 112 into the requested videocontent by communicating with the advertiser system 112 and the contentprovider system 114.

In one or more embodiments, a process for a viewer to view video contentaugmented with targeted advertisements begins with the content providersystem 114 creating or accessing video content 200. For example, thecontent provider system 114 can generate one or more types of videocontent to provide to a plurality of viewers. The video content caninclude, but is not limited to, short videos, television shows, movies,360 degree videos, or virtual reality videos. In one or more alternativeembodiments, the content provider system 114 provides video content fromone or more third-party systems. The content provider system 114 caninclude a content repository that stores video content and allowsviewers to access the video content on their respective devices.

As previously described, an administrator can be associated with thecontent provider system 114 or the advertiser system 112. Thus, theprocess can optionally include an administrator associated with thecontent provider system 114 identifying media insertion location(s) 202within video content. For example, an administrator associated with thecontent provider system 114 can view the video content and use one ormore tools in an administrator application to select portions of thevideo content to designate as media insertion locations. To illustrate,the tools can allow the administrator to highlight a region in a frameof the video content, such as by selecting a surface of an object withinthe video content. In one or more embodiments, the content providersystem 114 provides information about the selected object surface forthe video content to the digital advertisement management system 122.

In one or more embodiments, the content provider system 114 determineslocations within the video content with the intent to sell advertisingspace to one or more advertisers. Thus, the content provider system 114identifies the media insertion location(s), as described above, to setadvertising coordinates. By selecting locations within the video contentfor selling to advertisers, the content provider system 114 can workwith many different advertisers (e.g., via the digital advertisementmanagement system 122) to sell the advertising space. In one example,the content provider can sell the advertising space per view so that thecontent provider system 114 is paid per view without knowing exactlywhich advertisements are inserted into the video content.

FIG. 2A also illustrates that the advertiser system 112 creates an ad204 that promotes a brand, good, or service. Specifically, the ad caninclude a visual static advertisement or a video advertisement. Theadvertiser system 112 can create the ad at any time, either before orafter the content provider system 114 creates the video content. Aftercreating the ad, the advertiser system 112 can provide the ad 206 to thedigital advertisement management system 122 so that the video augmenter124 can insert the ad into one or more video content items. The digitaladvertisement management system 122 can store the ad in an ad repository208 along with other ads from the advertiser system 112 or from one ormore other advertisers.

In addition to the ads, the ad repository can store information aboutthe ads. For instance, the ad repository can include information thatallows the digital advertisement management system 122 to identify anaudience for a given ad. To illustrate, the ad repository can includetarget age groups, genders, interests, locations, or othercharacteristics of a targeted audience. In one or more embodiments, thedigital advertisement management system 122 determines target audienceinformation by analyzing the contents of the ads. Alternatively, thedigital advertisement management system 122 can determine targetaudience information based on input from the advertiser system 112.

As briefly mentioned previously, an administrator may be associated withthe advertiser system 112. Optionally, the administrator associated withthe advertiser system 112 can access video content to select mediainsertion location(s) 210. For instance, the advertiser system 112 (or acorresponding administrator) can access and view video content availablefrom the content provider system 114 by communicating with the contentprovider system 114 via a network connection. For example, theadvertiser system 112 can view a video content item to identify one ormore surfaces of objects within the video content item and send theinformation about the selected object surfaces to the video augmenter124.

Also, optionally, the advertiser system 112 can bid on location(s) 212within video content. Specifically, the digital advertisement managementsystem 122 can request bids from a plurality of advertisers to determinewhich of a plurality of different ads to display in a given mediainsertion location. The advertisers can submit bids (e.g., in ananonymous bidding system) for media insertion locations in a videocontent item. Thus, in one or more embodiments, the advertiser may nevereven see the ad location. In particular, an advertiser may bid on andpurchase an ad space of certain dimensions and context so that theviewers match their target audience. Alternatively, the advertisers cansubmit bids for specific video content items. As described in moredetail below, the digital advertisement management system 122 can selectan ad to insert into a media insertion location based on the bids fromadvertisers in addition to the targeted audience characteristics.

In one or more embodiments, the video augmenter 124 also optionallyaccesses video content to automatically identify suitable objectsurfaces 214. For instance, the video augmenter 124 can use variousimage processing techniques to analyze the video content and identifyobjects within the video content. The video augmenter 124 can analyzethe video content using object recognition processes to find objectswithin the video content that have dimensions suitable for insertingads. To illustrate, the video augmenter 124 can find objects with flator curved surfaces that fit the dimensions of advertisements in the adrepository.

According to one or more embodiments, the video augmenter 124 trains amachine-learning model to identify suitable locations and unsuitablelocations within the video content for inserting advertisements. Forexample, the video augmenter 124 can train the machine-learning model toidentify suitable locations based on areas that already includeadvertising or that are typically associated with advertising (e.g.,billboards, video boards, truck trailers, buses, storefronts, taxis);flat, rectangular areas (e.g., walls, billboards, ground surfaces,televisions); areas that remain in a viewable area of the video contentand are relatively motionless for a predetermined amount of time or thatmove slowly; and areas of the video content that are likely to attractthe viewer's attention (e.g., large areas or areas that are close to theviewer/camera view). The video augmenter 124 can train themachine-learning model to identify unsuitable locations based on areasthat are visually busy (e.g., areas that would make the advertisementsdifficult to discern such as street scenes) and areas that areinappropriate for advertisements (e.g., inside a home or church). Thevideo augmenter 124 can further train the machine-learning model toidentify ideal times within the video content for displayingadvertisements that would not interfere with the viewer's enjoyment orunderstanding of the video content (e.g., by avoiding displayingadvertisements that interfere with a mood or pivotal plot moment of thevideo content). Additionally, the video augmenter 124 can use manualvalidation of the results to further train the machine-learning model.

In at least some implementations, the video augmenter 124 findsunobscured, flat surfaces on objects such as billboards, signs,storefronts, and even vehicles. In alternative implementations, thevideo augmenter 124 also finds partially obscured and/or uneven surfacesthat are suitable for the system to insert ads on top of the surfaces.The video augmenter 124 can also identify object surfaces based onexisting ads from the original video content. For example, the videoaugmenter 124 can identify ad spaces on clothing (e.g., shirts, hats),cups/mugs, books/newspapers, picture frames, etc., and select one ormore of such surfaces as media insertion locations.

After the advertiser system 112, content provider system 114, and/or thedigital advertisement management system 122 have selected one or moremedia insertion locations in video content, the video augmenter 124 canbegin augmenting the video content with advertisements in response toviewer requests to view video content. As illustrated in FIG. 2A, aviewer of the client device 104 requests access to video content 216from the content provider system 114. For example, the viewer can usethe client application 118 to browse content provided by the contentprovider system 114 and select one of the available video content itemsto view on the client device 104. Although FIG. 2A illustrates that thevideo augmenter 124 identifies media insertion locations prior to theclient device 104 requesting the video content, the video augmenter 124can analyze the video content for media insertion locations inreal-time.

When the content provider system 114 receives the request to view videocontent, the content provider can provide an indication of the accessrequest 218 to the digital advertisement management system 122.Specifically, the content provider system 114 can send informationidentifying the video content to the digital advertisement managementsystem 122. In one or more embodiments, the information also includesinformation about one or more media locations in the video content (ifthe content provider system 114 did not previously provide suchinformation to the digital advertisement management system 122).Alternatively, the digital advertisement management system 122 mayalready have the information or may receive such information from theadvertiser system 112 in response to the indication of the accessrequest.

The video augmenter 124 then identifies the media insertion location(s)in the video content 220, as illustrated in FIG. 2B. In particular, thevideo augmenter 124 determines the specific position of the mediainsertion location(s) based on coordinates obtained from the advertisersystem 112, the content provider system 114, and/or from automaticallyidentifying the media insertion location(s). For example, the videoaugmenter 124 can use the coordinates to determine the position of thecorresponding object relative to other objects and/or a boundary of afield of view. To illustrate, for video content with a field of viewthat is fixed to a camera view of a single camera device used to capturethe video content, the coordinates can be relative to a field of viewboundary (e.g., the number of pixels from the edge of the field ofview). Alternatively, for video content that does not have a fixed fieldof view, but allows viewers to modify the field of view (e.g., virtualreality or 360-degree video), the coordinates can be relative to athree-dimensional axis origin.

Because the content is video content including a plurality of frames,the coordinates for a given media insertion location can also changerelative to objects within the video content or to a field of view. Inone or more embodiments, the video augmenter 124 determines thecoordinates of the media insertion location for each frame of the videocontent and stores the coordinates in an array, table, or other datastructure. Accordingly, video augmenter 124 can store a plurality ofchanging coordinates for a media insertion location within an array todescribe the path of the media insertion location in connection with thepath of the corresponding object within the video content.

In one or more embodiments, the video augmenter 124 determines thedimensions of a media insertion location 222 from one or more mediainsertion locations in the video content. As mentioned, the videoaugmenter 124 can also determine information about media insertionlocations when automatically identifying media insertion locations usingimage processing. The information can include various parameters of themedia insertion locations that describe a shape of the location (e.g.,triangle, rectangle, circle, other polygon) and a perspective of thelocation (e.g., whether the shape of the location is skewed).Accordingly, the video augmenter 124 can use the dimensions and othervisual parameters of the media insertion location to select a subset ofadvertisements from the ad repository.

After identifying a subset of advertisements that fit thedimensions/shape of the location, the digital advertisement managementsystem 122 can access a user/device profile 224 to select an ad toinsert into the media insertion location. In particular, the digitaladvertisement management system 122 can use information about the viewerand/or the viewer's device to select an ad. The digital advertisementmanagement system 122 can locate and access the user profile by using aviewer identifier or login information corresponding to the clientapplication 118. The digital advertisement management system 122accesses the user profile to determine interests, viewing history,location, or other information about the viewer to select an ad that mayinterest the viewer.

In at least some embodiments, the digital advertisement managementsystem 122 does not have the identity of the viewer. In such cases, thedigital advertisement management system 122 can obtain a deviceidentifier from the request to access video content. The deviceidentifier may be associated with a device profile that the digitaladvertisement management system 122 maintains to store a viewing historyassociated with the client device 104 of the viewer. The digitaladvertisement management system 122 can also determine additionalinformation for the client device based on the viewing history, such asinterests or location, to use in selecting an ad in which the viewer maybe interested.

After determining the dimensions of the media insertion location andaccessing a user/device profile, the digital advertisement managementsystem 122 selects an ad 226 from the ad repository. Specifically,selecting an ad includes selecting an ad in which the viewer may beinterested using the information that the digital advertisementmanagement system 122 determines for the viewer from the user/deviceprofile. Additionally, the selected ad includes dimensions that fitwithin the dimensions of the media insertion location. As described inmore detail below, the digital advertisement management system 122 canalso modify the ad to fit to the dimensions of the media insertionlocation.

After selecting the ad, the video augmenter 124 augments the videocontent 228 with the advertisement. For example, the video augmenter 124first determines whether the ad is a static ad or a video ad. To inserta static ad into the media insertion location, the video augmenter 124can generate a texture layer that includes the ad and fits the texturelayer to the dimensions of the media insertion layer. The videoaugmenter 124 can also fit to the perspective of the media insertionbased on the corresponding digital object. For example, if the objectappears to be facing a direction that is not directly at the viewer, thevideo augmenter 124 can change the perspective of the texture layer sothat the angle, size, and shape of the ad appears to fit to the objectsurface within the video content.

Alternatively, if the selected ad is a video ad, the video augmenter 124can insert a video player into the video content at the media insertionlocation. For instance, the video augmenter 124 can insert a hypertextmarkup language (“HTML”) player into the media insertion location thatfits to the dimensions of the location. Additionally, the videoaugmenter 124 can link the video player to a location of the video ad sothat the video player plays the video ad as the video content plays onthe client device 104. By inserting the video player and linking thevideo player to the selected video ad, the video augmenter 124 caneasily change the video ad playing in the video player for anotherviewer (or for a subsequent viewing by the same viewer) by changing thelocation linked to the video player.

Furthermore, by using a video player, the video augmenter 124 can insertthe video ad as an interactive experience for the viewer. In one or moreembodiments, an interactive video player within the video content canallow the viewer to pause the ad, fast forward or rewind the ad, followa link in the ad to a website of the advertiser system 112, etc.Accordingly, while the viewer watches the video content and an ad ispresent within a field of view of the viewer, the viewer can interactwith the ad in a natural way as if the ad were being displayed in astandalone video player.

In one or more embodiments, the video augmenter 124 positions the adwithin each frame of the video content to fit to the media insertionlocation based on the stored coordinates for the media insertionlocation (e.g., within an array containing the coordinates).Specifically, the video augmenter 124 uses the coordinates for a givenframe to insert the ad at the coordinates. For example, the coordinatescan allow the video augmenter 124 to digitally place the ad on thesurface of the object corresponding to the coordinates. If thecoordinates of the surface of the object change from one frame toanother (e.g., the object moves or the field of view shifts so that thesurface changes shape), the coordinates will indicate the change, andthe video augmenter 124 places the ad according to the changedcoordinates in the subsequent frame.

In one or more embodiments, the video augmenter 124 modifies an ad tomake the ad fit to the dimensions of the media insertion location. Forinstance, the dimensions of the ad may fit the object surface in oneframe, but may not fit the object surface in a subsequent frame. In suchcases, the video augmenter 124 can make the ad fit the dimensions of anyframe by cropping, stretching, zooming, cutting apportion of the ad, orotherwise modifying the ad to fit to the media insertion location. Thus,the video augmenter 124 can adjust the ad to appear as if the ad wereactually on the object surface even if part of the object surfacebecomes obscured by another object within the video content.

After augmenting the video content with the ad, the digitaladvertisement management system provides the video content with the ad230 to the client device 104. The video content provided to the clientdevice 104 includes one or more ads digitally inserted into one or moremedia insertion locations in the video content. Accordingly, the videocontent includes targeted advertisements for the viewer associated withthe client device 104. In one or more embodiments, the digitaladvertisement management system 122 provides the video content directlyto the client device 104. In one or more alternative embodiments, thedigital advertisement management system 122 provides the video contentby communicating with the content provider system 114 to provide thevideo content to the client device 104.

While the previous description relates to inserting a single ad into asingle media insertion point, the video augmenter 124 can insert anynumber of ads into any number of media insertion locations of videocontent. For example, the video augmenter 124 can insert a single ad aplurality of times into a video content item (e.g., a single ad on aplurality of billboards or other object surfaces in a video).Additionally, the video augmenter 124 can insert different ads each timethe same viewer views the content item.

As described above, the video augmenter 124 can augment video content byinserting an advertisement at a media insertion location selected by anadministrator or automatically by the video augmenter 124. FIGS. 3A-3Dillustrate user interfaces for selecting media insertion locations invideo content and managing available advertisements for inserting intothe video content. Specifically, FIG. 3A illustrates a client device 300including a video editing application 302 that allows an administratorto view and interact with video content to select media insertionlocations.

As illustrated, the video editing application 302 provides a videoediting interface 304 that displays video content with which theadministrator can interact, as described herein. In particular, theadministrator can view a video content item (e.g., a video file). Aspreviously mentioned, the video content can include conventional digitalvideo within a video player, 360 degree videos, virtual reality, etc.For example, the video content can include a plurality of differentobjects, at least one of which includes a surface suitable for insertingadvertisements. FIG. 3A illustrates that the video content includes atractor trailer and a billboard among additional scenery (e.g., trees,road).

Additionally, the video editing application 302 can include a timeline306 that allows the administrator to advance the video content in eitherdirection. In particular, the timeline 306 can allow the administratorto scrub forward or backward in the video content to view differentframes of the video content. The timeline 306 can also include aplayback feature to allow the administrator to play the video contentfrom the beginning or from a selected time in the timeline 306. Theadministrator can use the playback feature to find object surfacessuitable for media insertion locations.

In one or more embodiments, the video editing application 302 includestools for editing the video content in a variety of ways. For example,the video editing application 302 can include a tool foradding/selecting media insertion locations to the video content. FIG. 3Billustrates the video editing application 302 on the client device 300in which the video augmenter 124 has identified a plurality of mediainsertion locations within the video content. The video editingapplication 302 can include a location selection tool 308 in the videoediting interface 304 that allows the administrator to manually selectone or more of the media insertion locations.

As can be seen, the video augmenter 124 has identified a plurality ofsurfaces that are suitable locations for inserting advertisements. Theadministrator can use the location selection tool 308 to select one ormore of plurality of media insertion locations based on the shape, size,accessibility/visibility, or other characteristics. To illustrate, FIG.3B illustrates that the administrator has selected a first mediainsertion location 310 (“Ad Space 1”) and a second media insertionlocation 312 (“Ad Space 2”) within the video content for insertingadvertisements. In addition to selecting the media insertion locations,the administrator can input one or more characteristics of the mediainsertion locations such as an advertisement type (e.g., static, video)for each location.

To select the media insertion locations, the administrator can selectfrom any frame within the video content. Accordingly, the administratorcan go forward and backward in time in the video content to select oneor more media insertion locations identified by the video augmenter 124.In one or more embodiments, the first media insertion location 310 andthe second media insertion location 312 mentioned above occur in thesame frame of the video content. Alternatively, the administrator candetermine that the first media insertion location 310 and the secondmedia insertion location 312 occur in at least one different frame ofthe video content (e.g., the first media insertion location 310 isvisible while the second media insertion location 312 is not visible, orvice versa).

When the administrator selects the media insertion locations in thevideo content, the video editing application 302 can display anindicator of the selected media insertion locations within the videoediting interface 304. For example, the video editing application 302can display the selected media insertion locations as overlays on top ofthe video content. The overlays can include information associated withthe media insertion locations including, but not limited to, dimensions(e.g., height/width), shape, type of advertisement to be inserted.Additionally, the administrator can modify the shapes, sizes, and/orpositions of the media insertion locations by interacting with theoverlays. Accordingly, if the administrator wishes to remove a mediainsertion location, the administrator can move or delete thecorresponding media insertion location.

After selecting the media insertion locations, the video augmenter 124can process the video content to track the motion of the correspondingobject surfaces. Specifically, the video augmenter 124 can use motiontracking processes to determine a path of each object surface and thenassign the motion tracking information to the corresponding mediainsertion locations. By assigning the motion tracking information to themedia insertion locations, the video augmenter 124 determines an arrayof coordinates for each of the media insertion locations across theplurality of frames of the video content.

In one or more embodiments, the video augmenter 124 determines thecoordinates for each media insertion location according to a coordinatesystem for the video content. As briefly mentioned above, the videoaugmenter 124 can use different coordinate systems depending on the typeof video. If the coordinate system is based on a fixed origin (e.g., for360-degree video or virtual reality), the coordinates correspond to thedistance from the fixed origin in a three-dimensional space.Alternatively, if the coordinate system is based on the field of view ofthe viewer (e.g., relative to a boundary of a video player), thecoordinates for each media insertion location correspond to the fixedorigin in a two-dimensional space. The video augmenter 124 can alsostore the coordinates for each media insertion location as metadata inthe video content.

In addition to selecting one or more media insertion locations, anadministrator associated with an advertiser can manage additionalinformation associated with inserting advertisements into video content.For example, FIGS. 3C-3D illustrate user interfaces for an advertisementmanagement application 314 that allows the administrator to manageadvertisements for inserting into video content. The advertisementmanagement application 314 can include an ad management interface 316that allows the administrator to create and manage ad campaignsinvolving a plurality of advertisements for inserting into various videocontent items.

As illustrated in FIG. 3C, the ad management interface 316 allows anadministrator to create ad campaigns with various advertisingstrategies. For example, the administrator can assign a plurality ofparameters for an ad campaign including, but not limited to, campaignname, status, budget, schedule, frequency, ad types, bids, sources,location information, language, category, and intended audience. Theparameters determine how the digital advertisement management systemselects advertisements to insert into video content. For instance, theadministrator can pause an ad campaign so that the digital advertisementmanagement system does not select advertisements from the ad campaignwhile paused. Additionally, the digital advertisement management systemcan select advertisements from the ad campaign until the ad campaignreaches the established budget, the set scheduler, or the frequency.Furthermore, the digital advertisement management system selectsadvertisements to insert media insertion locations that match the adtype selected for the ad campaign and/or each individual advertisementin the ad campaign.

Once the administrator has set the parameters for an ad campaign, theadministrator can save the parameters and then determine whichadvertisements to include in the ad campaign, as described in moredetail with reference to FIG. 3D. As shown in FIG. 3D, the administratorcan view advertisements included in an ad campaign. The ad managementinterface 316 can display a plurality of assets (i.e., photos or othervisual images) available for use in advertisements with the ad campaign.For instance, the ad management interface 316 can display a firstsection 318 including static advertisements (e.g., still-frame images)and a second section 320 including video advertisements. Although FIG.3D illustrates only two sections, the ad management interface 316 canorganize assets into a plurality of different categories based on size,type, content, or other characteristics of the assets.

The administrator (or another user) can add, remove, or modify assetsassociated with the ad campaign within the ad management interface 316.Additionally, the administrator can view additional detail associatedwith an asset by selecting the asset within the ad management interface316. For example, the administrator can view the asset type, dimensions,performance (e.g., in one or more ad campaigns), and other metrics orcharacteristics associated with the asset by selecting the asset. The admanagement interface 316 can display the overlay in a detail overlay orin another interface.

After the administrator establishes the parameters for an ad campaignand adds advertisements to the ad campaign, the digital advertisementmanagement system can select advertisements from the ad campaign toinsert into video content. In one or more embodiments, the digitaladvertisement management system selects advertisements based on theparameters from the ad campaign. For example, the digital advertisementmanagement system can select an advertisement based on a bid from theadvertiser and the dimensions of the advertisement. In at least oneimplementation, the digital advertisement management system selects anadvertisement from an ad campaign that targets the viewer (e.g., basedon identified characteristics of the viewer). The selection can berandom from a plurality of advertisements that fit the requiredcharacteristics or according to an established priority. The digitaladvertisement management system can further select based on a previousselection history from the ad campaign or based on a performance ofassets in the ad campaign, such that lesser used and/or betterperforming assets are preferred.

Once the digital advertisement management system has selected anadvertisement for a media insertion location in video content, the videoaugmenter 124 augments the video content with the advertisement usingthe stored information for the media insertion location. FIGS. 4A-4Cillustrate a viewing device 400 that includes a client application 402for displaying video content that a viewer has requested from a contentprovider. Specifically, FIG. 4A illustrates a video interface 404 of theclient application 402 that allows the viewer to watch video contentthat the viewing device downloads or streams from a content provider.

In one or more embodiments, the video augmenter 124 has inserted a firstadvertisement 406 into the first media insertion location (i.e., firstmedia insertion location 310 of FIG. 3B) and a second advertisement 408into the second media insertion location (i.e., second media insertionlocation 312 of FIG. 3B). For example, the digital advertisementmanagement system selects a static advertisement to insert into thefirst media insertion location and a video advertisement to insert intothe second media insertion location. The digital advertisementmanagement system selects an advertisement that fits the dimensions andad type of the first media insert location. The digital advertisementmanagement system also selects an advertisement that fits the dimensionsand ad type of the second media insert location.

Additionally, as previously mentioned, the digital advertisementmanagement system selects advertisements to insert into the mediainsertion locations based on information about the viewer and/or theviewing device 400. For instance, if the viewer has a user profileassociated with the client application 402 or the content provider, thedigital advertisement management system can access the information fromthe user profile to identify interests or demographic information aboutthe viewer. Alternatively, the digital advertisement management systemcan access a device identifier of the viewing device 400 and determine aviewing history associated with the viewing device 400. Accordingly, thedigital advertisement management system selects advertisements that aretargeted to the viewer.

Once the digital advertisement management system has selected theadvertisements, the video augmenter 124 inserts the advertisements intothe media insertion locations using the coordinates corresponding to themedia insertion locations. To illustrate, the video augmenter 124inserts the first advertisement 406 into the first media insertionlocation by pinning the first advertisement 406 to the coordinatesstored as metadata with the video content. For example, the videoaugmenter 124 can assign the corners of the first advertisement 406 tothe corners of the rectangular billboard of the first media insertionlocation, as illustrated in FIG. 3D.

For example, the video augmenter 124 can place the first advertisementinto each frame at the coordinates corresponding to that frame. Thus, ifthe coordinates for the media insertion location change from one frameto another (e.g., based on the corresponding object surface changingposition, shape, or perspective within the designated coordinatesystem), the advertisement inserted into the media insertion locationchanges with the changing coordinates. The video augmenter 124 similarlyinserts the second advertisement 408 into the second media insertionlocation.

FIGS. 4B-4C illustrate the video content in the video interface 404 asthe viewer watches the video content on the viewing device 400. Inparticular, FIG. 4B illustrates a frame of the video content that ischronologically after a frame shown in FIG. 4A. Similarly, FIG. 4Cillustrates a frame of the video content that is chronologically afterthe frame illustrated in FIG. 4B. Accordingly, FIGS. 4A-4C illustratethe video content as it advances during playback on the viewing device400.

As shown in FIG. 4B, the position and the content of the firstadvertisement 406 does not change as the video content plays to thispoint. Specifically, the coordinates of the media insertion location donot change during the time between the frame in FIG. 4A and the frame inFIG. 4B, so the position of the first advertisement 406 does not change.Additionally, because the first advertisement 406 is a staticadvertisement, the content of the first advertisement 406 remains thesame regardless of whether the corresponding object moves duringplayback of the video content.

FIG. 4C illustrates that the second advertisement 408, which includes avideo advertisement, plays during playback of the video content. As thevideo content plays, the video advertisement also plays according to thetime that passes within the video content. For example, if the videoaugmenter 124 places the video advertisement on the side of a tractortrailer, as illustrated, the video advertisement plays on the side ofthe tractor trailer as if the side of the tractor trailer were a videoscreen. Additionally, the video advertisement may begin playing when thevideo advertisement becomes visible to the viewer within the videointerface 404. Alternatively, the video advertisement may begin playingwhen the video content begins playing and play continuously on a loop aslong as the video content is playing.

As shown, when the video content reaches a specific frame, the firstadvertisement 406 is no longer in the field of view because the field ofview has changed (e.g., the camera panned away or otherwise moved). As aresult, the object associated with the media insertion location of thefirst advertisement 406 moves out of view. Using the coordinatescorresponding to the media insertion location, the digital advertisementmanagement system causes the first advertisement 406 to move out of viewwith the object. Thus, the video augmenter 124 tracks the motion of theobjects (via the media insertion locations) with which theadvertisements correspond and causes the advertisements to follow thetracked motion of the objects.

As also illustrated, the tractor trailer on which the video augmenter124 placed the video advertisement has continued to move. Accordingly,the video advertisement moves along with the tractor trailer so that thevideo advertisement remains on the side surface of the tractor trailer.The video augmenter 124 previously determined the coordinates of thecorners of the tractor trailer by analyzing the video content andassociated the determined coordinates with the video advertisement(e.g., with the video player linking to the video advertisement). As thetractor trailer moves relative to the field of view, the videoadvertisement advances in time, as shown by the knife in the videoadvertisement being open in FIG. 4A, partially open in FIG. 4B, andclosed in FIG. 4C.

In one or more embodiments, inserting a video player at the coordinatesof the media insertion location allows the video augmenter 124 todynamically insert video advertisements into different instances of thevideo content for different viewers. For example, the digitaladvertisement management system associates a video advertisement withthe video player by obtaining a link (e.g., a URL) of the videoadvertisement and inserting the link into the metadata of the videoplayer. When a first viewer requests the video content, the digitaladvertisement management system can select a first video advertisementtargeted to the first viewer and link the first video to the videoplayer and then provide the video content to the first viewer's device.When a second viewer requests the same video content, the digitaladvertisement management system can select a second video advertisementtargeted to the second viewer and link the second video to the videoplayer and then provide the video content to the second viewer's device.Accordingly, inserting the video player allows the digital advertisementmanagement system to provide different instances of the same videocontent with different advertisements without re-processing the videocontent.

In one or more additional embodiments, the digital advertisementmanagement system selects a plurality of advertisements for a singlemedia insertion location. For example, the digital advertisementmanagement system can select a first video advertisement and a secondvideo advertisement targeted to a viewer for displaying at differenttimes within the same media insertion location. For instance, thedigital advertisement management system can insert the firstadvertisement for a first timeframe of the video content and the secondadvertisement for a second timeframe of the video content. Thus, as theviewer watches the video content, the viewer may see differentadvertisements at different times on the same object surface.

As described above, the video augmenter 124 can select and insertadvertisements into video content. FIG. 5 illustrates a state chart ofan algorithm for finding media insertion locations in video content andthen inserting targeted advertisements into the media insertionlocations. The process of FIG. 5 includes a step 500 for determining amedia insertion location on a digital object within video content. Afterdetermining the media insertion location, the video augmenter 124selects an advertisement 502 for a viewer requesting the video content.Additionally, the process includes a step 504 for augmenting the videocontent with the selected advertisement. The digital advertisementmanagement system then provides the video content 506 to the viewingdevice of the viewer.

In one or more embodiments, the step 500 for determining a mediainsertion location on a digital object within video content includesidentifying one or more media insertion locations within video content.Specifically, the video augmenter 124 analyzes the video content 508 toidentify media insertion locations that correspond to object surfacessuitable for inserting an advertisement into the video content.According to various implementations, the video augmenter 124 canidentify media insertion locations based on user input or automaticallyidentified media insertion locations.

For example, the video augmenter 124 can identify manually insertedlocations 510 that an administrator associated with a content provideror advertiser marked in the video content. The manually insertedlocations can include a set of points that the administrator insertedinto one or more frames of the video content that mark the boundaries ofthe media insertion location. Additionally, the manually insertedlocations can include additional parameters for the video augmenter 124to use in selecting and inserting advertisements, such as an ad type.

Alternatively, the video augmenter 124 can apply image processing 512 tothe video content to identify media insertion locations. For example,the video augmenter 124 can analyze individual frames of the videocontent using object recognition and/or machine-learning to identify anddistinguish separate objects within the video content. Additionally, thevideo augmenter 124 can identify positions of the objects based on acoordinate system that the video augmenter 124 establishes for the videocontent. As described previously, the coordinates can be based on athree-dimensional or a two-dimensional origin according to athree-dimensional space in a virtual reality environment or 360-degreeenvironment, or a two-dimensional boundary of a video player.

In addition to identifying the location of objects based on thecoordinate system, the video augmenter 124 can identify suitable objectsurfaces 514 of the identified objects. For instance, the videoaugmenter 124 can identify visible object surfaces that would allow auser to clearly see an advertisement. The video augmenter 124 can alsoidentify object surfaces that may catch the eye of a viewer based on thepositioning, prominence, movement, size, or other characteristics. Asmentioned previously, the video augmenter 124 can also identify objectsurfaces that already have ads as suitable surfaces such as shirts,mugs, etc. Additionally, the video augmenter 124 can identify objectsurfaces with common shapes that correspond to advertisements in an adrepository.

After identifying suitable object surfaces, the video augmenter 124 candetermine dimensions for the location 516. Specifically, the videoaugmenter 124 determines the shape and the size of the media insertionlocation so that a selected advertisement will fit on the correspondingobject surface. For example, the video augmenter 124 can determine apixel size of the object surface. Alternatively, the video augmenter 124can use another measurement method for determining a size of the mediainsertion location.

After the video augmenter 124 has identified locations and determinedthe dimensions of the locations, the video augmenter 124 selects anadvertisement 502 that fits the dimensions of a media insertionlocation. For instance, the video augmenter 124 can access an adrepository and find a plurality of advertisements that have a size,aspect ratio, shape, etc., that fits the media insertion location. Thevideo augmenter 124 then uses information about the viewer and/or theviewer device to select an advertisement in which the viewer may beinterested, as described previously.

The video augmenter 124 then proceeds with the step 504 for augmentingthe video content with the selected advertisement. The video augmenter124 can first determine coordinates for the location 518. For example,the video augmenter 124 can determine the coordinates from metadata ofthe video content. To illustrate, the coordinates can be stored in anarray of tuples that define the coordinates of the media insertionlocation.

Each tuple in the array can include a number of values representing theboundaries of the media insertion location corresponding to a specificframe of the video content. For instance, a tuple can includecoordinates (e.g., “x,y,z” coordinate values) representing the fourcorners of a rectangle, three coordinates representing corners of atriangle, or another number corresponding to boundaries of a differentshape. A tuple may also include additional information such as Beziercurve definitions to represent a non-linear boundary (e.g., a curvededge) of a media insertion location. Thus, the tuple can define theshape and position of the media insertion location in a given frame ofthe video content. The array of tuples defines the shape and location ofthe media insertion for all of the frames in which the media insertionlocation is visible within the video content.

According to one or more embodiments, when inserting a videoadvertisement into the media insertion location, the video augmenter 124can insert a video player 520, as described previously with respect toFIGS. 2A-2B. For instance, the video augmenter 124 can embed the videoplayer directly into the video content using the coordinates in thearray of tuples. Thus, the video augmenter 124 can insert a video playerwithin another video player so that the internal video player can movearound (according to the coordinates) on a frame-by-frame basis tomaintain the video player in the correct location on the object surface.Additionally, inserting an internal video player into another videoplayer allows a viewer to interact with the video advertisement usingthe internal video player. Once the video augmenter 124 inserts thevideo player for the video advertisement into the video player of thevideo content, the video augmenter 124 can associate the videoadvertisement with the video player, as described above with respect toFIGS. 4A-4C.

In one or more embodiments, the video augmenter 124 inserts a staticadvertisement 522 into the media insertion location by placing thestatic advertisement directly into each frame of the video content. Forexample, for a static advertisement such as an image or text, the videoaugmenter 124 accesses the array of tuples containing the coordinatesfor each frame of the video content. The video augmenter 124 can theninsert the image or text by overlaying the image or text onto the videocontent as layers at the corresponding coordinates for each frame.Alternatively, the video augmenter 124 can insert an image container(similar to a video player) and link the static advertisement to theimage container so that the video augmenter 124 can easily swap out thelinked advertisement. In one or more embodiments, the video augmenter124 then performs additional processing on the video content to removethe layers and flatten each frame into a single layer. Alternatively,the video augmenter 124 retains the layers in the video content forproviding to the viewer.

In one or more embodiments, inserting a video or static advertisementinto a media insertion location involves changing the perspective of theadvertisement. For instance, if the perspective of the object surface isskewed, the video augmenter 124 can skew the advertisement according tothe perspective of the object surface. Similarly, the video augmenter124 can insert an advertisement to an object surface by wrapping theadvertisement to the object surface. For instance, the video augmenter124 can place the advertisement on the object surface as a digitaltexture, or similar to placing a texture on an object, with a rotationvalue or a positional value relative to other objects in the videocontent (e.g., in front of or behind other objects). Thus, if the objectrotates or otherwise causes part of the corresponding surface to becomeobscured, the advertisement follows the movement/rotation of the objectso that the advertisement appears to also rotate or become obscured.This can allow the advertisement to appear as if the advertisement ispart of the original video content.

Additionally, the video augmenter 124 can add additional coordinatepoints if the object surface becomes obscured by adding corner points tocrop out part of the advertisement. To illustrate, if a rectangularadvertisement becomes partially obscured by another object within thevideo content (e.g., by another rectangular object), the video augmenter124 can detect that the visible portion of the object surface is asix-sided polygon. For the tuples corresponding to the frames in whichthe advertisement is partially obscured, the video augmenter 124 canstore six coordinate points. The video augmenter 124 can also use theknowledge that the advertisement is originally rectangular to crop theobscured portion of the advertisement from the frames in which theobject surface is partially obscured.

After the video augmenter 124 has augmented the video content with anadvertisement, the digital advertisement management system provides thevideo content 506 to the viewer device. Specifically, the digitaladvertisement management system can communicate with the contentprovider to provide the video content to the viewing device with theinserted advertisements or provide the video content directly to theviewing device via a network connection. The viewer can then watch thevideo content and, in some instances, interact with the advertisementswithin the video content.

FIGS. 1-5, the corresponding text, and the examples, provide a number ofdifferent systems and devices for augmenting video content withadvertisements. In addition to the foregoing, embodiments can bedescribed in terms of flowcharts comprising acts and steps foraccomplishing a particular result. For example, FIG. 6, this figureillustrates a flowchart of a series of acts 600 of augmenting videocontent with a digital advertisement in accordance with one or moreembodiments. While FIG. 6 illustrates acts according to one embodiment,alternative embodiments may omit, add to, reorder, and/or modify any ofthe acts shown in FIG. 6. The acts of FIG. 6 can be performed as part ofa method. Alternatively, a non-transitory computer readable medium cancomprise instructions, that when executed by one or more processors,cause a computing device to perform the acts of FIG. 6. In still furtherembodiments, a system can perform the acts of FIG. 6.

The acts 600 include an act 602 of analyzing video content to determinea media insertion location. For example, act 602 involves analyzingvideo content to determine a media insertion location on a digitalobject within the video content, the media insertion location beingsuitable for placing an advertisement on the digital object within thevideo content. The digital object can include a stationary object or amoving object within the video content.

Act 602 can involve detecting, using image processing, a surface of thedigital object within the video content, the surface comprisingdimensions suitable for inserting the advertisement. Act 602 can alsoinvolve detecting the media insertion location on the digital objectwithin the video content, the media insertion location comprisingdimensions suitable for inserting the advertisement. Alternatively, act602 can involve receiving an input from an administrator user indicatinga selection of the media insertion location corresponding to the surfaceof the digital object.

The acts 600 also include an act 604 of selecting an advertisement toinsert into the video content. For example, act 604 involves selectingan advertisement to digitally insert into the video content based on oneor more of the media insertion location, a viewer of the video content,or a viewing device of the viewer. The advertisement can include staticcontent or video content.

Act 604 can involve determining a device type of the viewing device, alocation of the viewing device, or a viewing history associated with theviewing device. Act 604 can further involve selecting the advertisementbased on the device type of the viewing device, the location of theviewing device, or the viewing history associated with the viewingdevice.

Act 604 can involve determining a device identifier of the viewingdevice, and accessing a viewing history associated with the viewingdevice based on the device identifier. Additionally, act 604 can theninvolve selecting the advertisement based on the viewing historyassociated with the viewing device.

Act 604 can involve accessing a user account of a user of the clientdevice to determine one or more characteristics of the user, andselecting the advertisement based on the one or more characteristics ofthe user. Furthermore, act 604 can involve determining size dimensionsof the media insertion location, and selecting the advertisement byidentifying an advertisement that fits within the size dimensions of themedia insertion location. For instance, act 604 can involve identifying,in an advertisement repository, a plurality of advertisements comprisingdimensions corresponding to the dimensions of the visible objectsurface, and selecting, from the plurality of advertisements, theadvertisement based on the viewer of the video content or the viewingdevices of the viewer.

The acts 600 also include an act 606 of augmenting the video contentwith the advertisement. For example, act 606 involves augmenting thevideo content by placing the advertisement on the digital object withinthe video content at the media insertion location. Act 606 can involveplacing the advertisement on a visible object surface within the videocontent at the media insertion location in response to a request toprovide the video content to the client device.

Act 606 can involve determining coordinates for the media insertionlocation within the video content, and inserting the advertisement intothe video content using the determined coordinates. For example, act 606can involve determining two-dimensional coordinates for the mediainsertion location relative to an origin point at a border of a videoplayer containing the video content. Alternatively, act 606 can involvedetermining three-dimensional coordinates for the media insertionlocation relative to an origin point corresponding to a perspective ofthe viewer.

As part of act 606, or as an additional act, the acts 600 can includeinserting a hypertext markup language video player on the visible objectsurface within the video content at the media insertion location. Theacts 600 can further include associating the hypertext markup languagevideo player with a uniform resource locator link to the advertisementby inserting the uniform resource locator into metadata of the hypertextmarkup language video player, the advertisement comprising a videoadvertisement.

Additionally, the acts 600 can include an act 608 of providing the videocontent. For example, act 608 involves providing the video contentcomprising the advertisement for display at a client device. Act 608 caninvolve providing the video content with metadata comprising informationabout the advertisement to the client device.

FIG. 7 illustrates a schematic diagram illustrating a computing device700 that includes or implements a digital advertisement managementsystem 702. As illustrated by FIG. 7, the computing device 700 includesa plurality of components that perform at least some of the functionsand methods described herein. The computing device 700 can include apersonal computer, laptop computer, mobile device, mobile phone, tablet,special purpose computer, television, server device(s) or othercomputing device, including computing devices described below withregard to FIG. 8. Additionally, although FIG. 7 illustrates that thedigital advertisement management system 702 is operating on a singlecomputing device 700, the digital advertisement management system 702may operate within a distributed environment, such that the digitaladvertisement management system 702 can be stored and/or operate on aplurality of computing devices. Furthermore, one or more client devicesmay remotely access the digital advertisement management system 702 toperform the document review processes described herein.

In one or more embodiments, the digital advertisement management system702 is associated with one or more applications that run on thecomputing device 700. In particular, the digital advertisementmanagement system 702 includes a video augmenter 124 including a contentmanager 704, a video analyzer 706, an ad manager 708, a content modifier710, a communication manager 712, and a data storage manager 714.Although the components of the video augmenter 124 are shown to beseparate in FIG. 7, any of the components may be combined into fewercomponents, such as into a single component, or divided into morecomponents as may serve a particular implementation. Furthermore, atleast some of the components of the digital advertisement managementsystem 702 may be implemented on other devices and/or with othersystems.

The components of the digital advertisement management systems 702 caninclude software, hardware, or both. For example, the components of thedigital advertisement management system 702 (e.g., the components of thecomputing device 700) can include on or more instructions stored on acomputer-readable storage medium and executed by processors of one ormore computing devices such as the computing device 700. When executedby the one or more processors, the computer-executable instructions ofthe digital advertisement management system 702 cause the computingdevices to perform the advertisement insertion processes describedherein. Alternatively, the components of the digital advertisementmanagement system 702 comprise hardware, such as a special purposeprocessing device to perform specific functions associated with documentreview processes. Additionally, the components of the digitaladvertisement management system 702 can comprise a combination ofcomputer-executable instructions and hardware.

Furthermore, the components of the digital advertisement managementsystem 702 performing the functions described herein with respect to thedigital advertisement management system 702 may, for example, beimplemented as part of a stand-alone application, as a module of anapplication, as part of a suite of applications, as a plug-in forapplications including content creation applications, as a libraryfunction or functions that may be called by other applications, and/oras a cloud-computing model. Thus, the components of the digitaladvertisement management system 702 may be implemented as part of astand-alone application on a personal computing device or a mobiledevice. Alternatively, or additionally, the components of the digitaladvertisement management system 702 may be implemented in anyapplication that allows delivery of content to users (e.g., documentsharing), as previously described.

As previously described, the digital advertisement management system 702includes a content manager 704. Specifically, the content manager 704facilitates management of video content. For example, the contentmanager 704 can allow the digital advertisement management system 702 toaccess video content available from one or more content providers.Alternatively, the content manager 704 can allow the digitaladvertisement management system 702 to store video content on the datastorage manager 714. The content manager 704 can also communicate withthe communication manager 712 to send and receiving information aboutrequested video content in connection with one or more viewer devices.

The video analyzer 706 analyzes video content requested by a viewer toidentify media insertion locations for inserting advertisements. Inparticular, the video analyzer 706 can analyze metadata associated withvideo content to identify media insertion locations, includingdimensions and coordinates of the media insertion locations. Forexample, the video analyzer 706 can identify surfaces of digital objectsthat are suitable for inserting advertisements. Additionally, the videoanalyzer 706 can use image processing and machine-learning to findobject surfaces that are suitable for inserting advertisements.

The digital advertisement management system 702 also includes an admanager 708 that manages advertisements from one or more advertisers.For instance, the ad manager 708 can access a plurality ofadvertisements associated with a plurality of advertisers (e.g., in anad repository) to select an advertisement to insert into a mediainsertion location associated with a digital object of requested videocontent. The ad manager 708 can use information from user profiles,device profiles, and video content to determine which advertisements toinsert into media insertion locations in video content.

The content modifier 710 facilitates the insertion of advertisementsinto video content. Specifically, the content modifier 710 can insertadvertisements into media insertion locations of video content usingcoordinate information associated with the media insertion locations.For example, the content modifier 710 can place a video player at amedia insertion location for inserting a video advertisement. In anotherexample, the content modifier 710 can place a static advertisement at amedia insertion location.

The communication manager 712 facilitates communications between thedigital advertisement management system 702 and one or more othercomponents, such as the components of the environment of FIG. 1. Forexample, the communication manager 712 can facilitate communicationbetween the digital advertisement management system 702 and contentprovider(s), advertiser(s), administrator device(s), and viewingdevice(s). Accordingly, the communication manager 712 can access videocontent and advertisements. Additionally, the communication manager 712can receive information about media insertion locations fromadministrators and provide modified video content (i.e., video contentwith targeted advertisements) to viewers.

The digital advertisement management system 702 also includes a datastorage manager 714 to store and maintain data on the computing device700. In particular, the data storage manager 714 can communicate withthe other components of the digital advertisement management system 702to store data associated with the processes for inserting targetedadvertisements into video content described herein. The data storagemanager 714 can also provide the data to one or more of the componentsin connection with the advertisement insertion processes. For example,the data storage manager 714 can store information including, but notlimited to, video content, advertisements (e.g., in an ad repository),user/device profiles, and/or media insertion location information.

Embodiments of the present disclosure may comprise or utilize a specialpurpose or general-purpose computer including computer hardware, suchas, for example, one or more processors and system memory, as discussedin greater detail below. Embodiments within the scope of the presentdisclosure also include physical and other computer-readable media forcarrying or storing computer-executable instructions and/or datastructures. In particular, one or more of the processes described hereinmay be implemented at least in part as instructions embodied in anon-transitory computer-readable medium and executable by one or morecomputing devices (e.g., any of the media content access devicesdescribed herein). In general, a processor (e.g., a microprocessor)receives instructions, from a non-transitory computer-readable medium,(e.g., a memory, etc.), and executes those instructions, therebyperforming one or more processes, including one or more of the processesdescribed herein.

Computer-readable media can be any available media that can be accessedby a general purpose or special purpose computer system.Computer-readable media that store computer-executable instructions arenon-transitory computer-readable storage media (devices).Computer-readable media that carry computer-executable instructions aretransmission media. Thus, by way of example, and not limitation,embodiments of the disclosure can comprise at least two distinctlydifferent kinds of computer-readable media: non-transitorycomputer-readable storage media (devices) and transmission media.

Non-transitory computer-readable storage media (devices) includes RAM,ROM, EEPROM, CD-ROM, solid state drives (“SSDs”) (e.g., based on RAM),Flash memory, phase-change memory (“PCM”), other types of memory, otheroptical disk storage, magnetic disk storage or other magnetic storagedevices, or any other medium which can be used to store desired programcode means in the form of computer-executable instructions or datastructures and which can be accessed by a general purpose or specialpurpose computer.

A “network” is defined as one or more data links that enable thetransport of electronic data between computer systems and/or modulesand/or other electronic devices. When information is transferred, orprovided over a network or another communications connection (eitherhardwired, wireless, or a combination of hardwired or wireless) to acomputer, the computer properly views the connection as a transmissionmedium. Transmissions media can include a network and/or data linkswhich can be used to carry desired program code means in the form ofcomputer-executable instructions or data structures and which can beaccessed by a general purpose or special purpose computer. Combinationsof the above should also be included within the scope ofcomputer-readable media.

Further, upon reaching various computer system components, program codemeans in the form of computer-executable instructions or data structurescan be transferred automatically from transmission media tonon-transitory computer-readable storage media (devices) (or viceversa). For example, computer-executable instructions or data structuresreceived over a network or data link can be buffered in RAM within anetwork interface module (e.g., a “NIC”), and then eventuallytransferred to computer system RAM and/or to less volatile computerstorage media (devices) at a computer system. Thus, it should beunderstood that non-transitory computer-readable storage media (devices)can be included in computer system components that also (or evenprimarily) utilize transmission media.

Computer-executable instructions comprise, for example, instructions anddata which, when executed at a processor, cause a general-purposecomputer, special purpose computer, or special purpose processing deviceto perform a certain function or group of functions. In someembodiments, computer-executable instructions are executed on ageneral-purpose computer to turn the general-purpose computer into aspecial purpose computer implementing elements of the disclosure. Thecomputer executable instructions may be, for example, binaries,intermediate format instructions such as assembly language, or evensource code. Although the subject matter has been described in languagespecific to structural features and/or methodological acts, it is to beunderstood that the subject matter defined in the appended claims is notnecessarily limited to the described features or acts described above.Rather, the described features and acts are disclosed as example formsof implementing the claims.

Those skilled in the art will appreciate that the disclosure may bepracticed in network computing environments with many types of computersystem configurations, including, personal computers, desktop computers,laptop computers, message processors, hand-held devices, multi-processorsystems, microprocessor-based or programmable consumer electronics,network PCs, minicomputers, mainframe computers, mobile telephones,PDAs, tablets, pagers, routers, switches, and the like. The disclosuremay also be practiced in distributed system environments where local andremote computer systems, which are linked (either by hardwired datalinks, wireless data links, or by a combination of hardwired andwireless data links) through a network, both perform tasks. In adistributed system environment, program modules may be located in bothlocal and remote memory storage devices.

Embodiments of the present disclosure can also be implemented in cloudcomputing environments. In this description, “cloud computing” isdefined as a model for enabling on-demand network access to a sharedpool of configurable computing resources. For example, cloud computingcan be employed in the marketplace to offer ubiquitous and convenienton-demand access to the shared pool of configurable computing resources.The shared pool of configurable computing resources can be rapidlyprovisioned via virtualization and released with low management effortor service provider interaction, and then scaled accordingly.

A cloud-computing model can be composed of various characteristics suchas, for example, on-demand self-service, broad network access, resourcepooling, rapid elasticity, measured service, and so forth. Acloud-computing model can also expose various service models, such as,for example, Software as a Service (“SaaS”), Platform as a Service(“PaaS”), and Infrastructure as a Service (“IaaS”). A cloud-computingmodel can also be deployed using different deployment models such asprivate cloud, community cloud, public cloud, hybrid cloud, and soforth. In this description and in the claims, a “cloud-computingenvironment” is an environment in which cloud computing is employed.

FIG. 8 illustrates a block diagram of exemplary computing device 800that may be configured to perform one or more of the processes describedabove. One will appreciate that one or more computing devices such asthe computing device 800 may implement the digital advertisementmanagement system 702. As shown by FIG. 8, the computing device 800 cancomprise a processor 802, a memory 804, a storage device 806, an I/Ointerface 808, and a communication interface 810, which may becommunicatively coupled by way of a communication infrastructure 812. Incertain embodiments, the computing device 800 can include fewer or morecomponents than those shown in FIG. 8. Components of the computingdevice 800 shown in FIG. 8 will now be described in additional detail.

In one or more embodiments, the processor 802 includes hardware forexecuting instructions, such as those making up a computer program. Asan example, and not by way of limitation, to execute instructions fordynamically modifying workflows, the processor 802 may retrieve (orfetch) the instructions from an internal register, an internal cache,the memory 804, or the storage device 806 and decode and execute them.The memory 804 may be a volatile or non-volatile memory used for storingdata, metadata, and programs for execution by the processor(s). Thestorage device 806 includes storage, such as a hard disk, flash diskdrive, or other digital storage device, for storing data or instructionsfor performing the methods described herein.

The I/O interface 808 allows a user to provide input to, receive outputfrom, and otherwise transfer data to and receive data from computingdevice 800. The I/O interface 808 may include a mouse, a keypad or akeyboard, a touch screen, a camera, an optical scanner, networkinterface, modem, other known I/O devices or a combination of such I/Ointerfaces. The I/O interface 808 may include one or more devices forpresenting output to a user, including, but not limited to, a graphicsengine, a display (e.g., a display screen), one or more output drivers(e.g., display drivers), one or more audio speakers, and one or moreaudio drivers. In certain embodiments, the I/O interface 808 isconfigured to provide graphical data to a display for presentation to auser. The graphical data may be representative of one or more graphicaluser interfaces and/or any other graphical content as may serve aparticular implementation.

The communication interface 810 can include hardware, software, or both.In any event, the communication interface 810 can provide one or moreinterfaces for communication (such as, for example, packet-basedcommunication) between the computing device 800 and one or more othercomputing devices or networks. As an example, and not by way oflimitation, the communication interface 810 may include a networkinterface controller (NIC) or network adapter for communicating with anEthernet or other wire-based network or a wireless NIC (WNIC) orwireless adapter for communicating with a wireless network, such as aWI-FI.

Additionally, the communication interface 810 may facilitatecommunications with various types of wired or wireless networks. Thecommunication interface 810 may also facilitate communications usingvarious communication protocols. The communication infrastructure 812may also include hardware, software, or both that couples components ofthe computing device 800 to each other. For example, the communicationinterface 810 may use one or more networks and/or protocols to enable aplurality of computing devices connected by a particular infrastructureto communicate with each other to perform one or more aspects of theprocesses described herein. To illustrate, the document review processcan allow a plurality of devices (e.g., a client device and serverdevices) to exchange information using various communication networksand protocols for sharing information such as electronic documents,annotations, and other document review information.

In the foregoing specification, the present disclosure has beendescribed with reference to specific exemplary embodiments thereof.Various embodiments and aspects of the present disclosure(s) aredescribed with reference to details discussed herein, and theaccompanying drawings illustrate the various embodiments. Thedescription above and drawings are illustrative of the disclosure andare not to be construed as limiting the disclosure. Numerous specificdetails are described to provide a thorough understanding of variousembodiments of the present disclosure.

The present disclosure may be embodied in other specific forms withoutdeparting from its spirit or essential characteristics. The describedembodiments are to be considered in all respects only as illustrativeand not restrictive. For example, the methods described herein may beperformed with less or more steps/acts or the steps/acts may beperformed in differing orders. Additionally, the steps/acts describedherein may be repeated or performed in parallel with one another or inparallel with different instances of the same or similar steps/acts. Thescope of the present application is, therefore, indicated by theappended claims rather than by the foregoing description. All changesthat come within the meaning and range of equivalency of the claims areto be embraced within their scope.

I claim:
 1. In a digital media environment for playing digital video, acomputer-implemented method of inserting advertisements into digitalvideo, comprising: analyzing, by at least one processor, video contentto determine a media insertion location on a digital object within thevideo content, the digital object being visible within a plurality ofvideo frames of pre-generated video content; generating, by the at leastone processor, a plurality of tuples comprising coordinates for themedia insertion location in the plurality of video frames by: detectingthat the media insertion location is partially obscured in a subset ofthe plurality of video frames; and inserting additional coordinatepoints in tuples corresponding to the subset of the plurality of videoframes based on the media insertion location being partially obscured inthe subset of the plurality of video frames; selecting, by the at leastone processor, an advertisement to digitally insert into the videocontent based on one or more of the media insertion location, a viewerof the video content, or a viewing device of the viewer; digitallyaugmenting, by the at least one processor, the video content with theadvertisement by placing the advertisement on the digital object in theplurality of video frames within the video content at the coordinatescorresponding to the digital object from the plurality of tuples,wherein placing the advertisement comprises cropping the advertisementto fit within the media insertion location in the subset of theplurality of video frames based on the additional coordinate points; andproviding the video content comprising the advertisement for display atthe viewing device.
 2. The computer-implemented method as recited inclaim 1, wherein determining the media insertion location comprisesautomatically detecting, using image processing, a surface of thedigital object within the video content, using a machine learning modeltrained to recognize one or more of: areas that already includeadvertising; flat rectangular areas, areas that remain relatively stillfor a predetermined time period; areas that are typically associatedwith advertising; or areas that are busy.
 3. The computer-implementedmethod as recited in claim 1, wherein digitally augmenting the videocontent with the advertisement comprises inserting a hypertext markuplanguage video player at the media insertion location.
 4. Thecomputer-implemented method as recited in claim 1, wherein digitallyaugmenting the video content with the advertisement comprises placingthe advertisement as a layer pinned to the digital object at thecoordinates corresponding to the digital object.
 5. Thecomputer-implemented method as recited in claim 1, wherein theadvertisement comprises a video advertisement and the video contentcomprises a 360-degree video.
 6. A non-transitory computer readablestorage medium comprising instructions that, when executed by at leastone processor, cause a computing device to: analyze pre-generated videocontent to determine a media insertion location on a digital objectwithin the pre-generated video content, the digital object being visiblewithin a plurality of video frames of the pre-generated video content;generate a plurality of tuples comprising coordinates for the mediainsertion location in the plurality of video frames by: detecting thatthe media insertion location is partially obscured in a subset of theplurality of video frames; and inserting additional coordinate points intuples corresponding to the subset of the plurality of video framesbased on the media insertion location being partially obscured in thesubset of the plurality of video frames; select an advertisement todigitally insert into the pre-generated video content based on one ormore of the media insertion location, a viewer of the pre-generatedvideo content, or a client device to which the pre-generated videocontent will be provided; digitally augment the pre-generated videocontent with the advertisement by placing the advertisement on thedigital object in the plurality of video frames within the pre-generatedvideo content at the coordinates corresponding to the digital objectfrom the plurality of tuples, wherein placing the advertisementcomprises cropping the advertisement to fit within the media insertionlocation in the subset of the plurality of video frames based on theadditional coordinate points; and provide the pre-generated videocontent comprising the advertisement for display at the client device.7. The non-transitory computer readable storage medium as recited inclaim 6, further comprising instructions that, when executed by the atleast one processor, cause the computing device to determine the mediainsertion location by automatically detecting, using image processing, asurface of the digital object within the video content, using a machinelearning model trained to recognize one or more of areas that alreadyinclude advertising; flat rectangular areas, areas that remainrelatively still for a predetermined time period; areas that aretypically associated with advertising; or areas that are busy.
 8. Thenon-transitory computer readable storage medium as recited in claim 6,further comprising instructions that, when executed by the at least oneprocessor, cause the computing device to digitally augment thepre-generated video content with the advertisement by placing theadvertisement as a layer pinned to the digital object at the coordinatescorresponding to the digital object.
 9. The non-transitory computerreadable storage medium as recited in claim 6, further comprisinginstructions that, when executed by the at least one processor, causethe computing device to select the advertisement by: determining adevice type of the client device, a location of the client device, or aviewing history associated with the client device; and selecting theadvertisement based on the device type of the client device, thelocation of the client device, or the viewing history associated withthe client device.
 10. The non-transitory computer readable storagemedium as recited in claim 6, further comprising instructions that, whenexecuted by the at least one processor, cause the computing device toselect the advertisement by: accessing a user account of the of theclient device to determine one or more characteristics of the viewer;and selecting the advertisement based on the one or more characteristicsof the viewer.
 11. The non-transitory computer readable storage mediumas recited in claim 6, further comprising instructions that, whenexecuted by the at least one processor, cause the computing device toselect the advertisement by: determining size dimensions of the mediainsertion location based on the coordinates corresponding to the digitalobject; and selecting the advertisement by identifying an advertisementthat fits within the size dimensions of the media insertion location.12. The non-transitory computer readable storage medium as recited inclaim 6, further comprising instructions that, when executed by the atleast one processor, cause the computing device to: determine, using amachine-learning model, a time during the video content to avoidinserting the advertisement into the video content based on a mood ofthe video content; and digitally augment, in response to determining thetime to avoid inserting the advertisement, the video content with theadvertisement at the media insertion location during a time other thanthe determined time.
 13. In a digital media environment for playingdigital video, a system for inserting advertisements into digital video,comprising: at least one processor; and a non-transitory computer memorycomprising: an advertisement repository including digitaladvertisements; and instructions that, when executed by the at least oneprocessor, cause the system to: analyze video content to determine amedia insertion location on a visible object surface within the videocontent, the visible object surface being visible within a plurality ofvideo frames of the video content; generate a plurality of tuplescomprising coordinates for the media insertion location in the pluralityof video frames by: detecting that the media insertion location ispartially obscured in a subset of the plurality of video frames; andinserting additional coordinate points in tuples corresponding to thesubset of the plurality of video frames based on the media insertionlocation being partially obscured in the subset of the plurality ofvideo frames; select an advertisement from the advertisement repositoryto digitally insert into the video content based on one or more of aviewer of the video content or a viewing device of the viewer; digitallyaugment the video content with the advertisement, wherein digitallyaugmenting the video content comprises cropping the advertisement to fitwithin the media insertion location in the subset of the plurality ofvideo frames based on the additional coordinate points by: pinning theadvertisement as a layer to the visible object surface at thecoordinates corresponding to the visible object surface in the pluralityof video frames from the plurality of tuples; or inserting a hypertextmarkup language video player on the visible object surface at thecoordinates corresponding to the visible object surface in the pluralityof video frames from the plurality of tuples; and provide the videocontent comprising the advertisement for display at a client device. 14.The system as recited in claim 13, wherein the coordinates correspond tocorners of the visible object surface in the plurality of video framesof the video content.
 15. The system as recited in claim 13, furthercomprising instructions that, when executed by the at least oneprocessor, cause the system to associate the hypertext markup languagevideo player with a uniform resource locator link to the advertisementby inserting the uniform resource locator into metadata of the hypertextmarkup language video player.
 16. The system as recited in claim 13,further comprising instructions that, when executed by the at least oneprocessor, cause the system to select the advertisement by: determininga device identifier of the viewing device; accessing a viewing historyassociated with the viewing device based on the device identifier; andselecting the advertisement based on the viewing history associated withthe viewing device.
 17. The system as recited in claim 13, furthercomprising instructions that, when executed by the at least oneprocessor, cause the system to select the advertisement by: accessing auser account of the viewer of the client device to determinecharacteristics or interests of the viewer; and selecting theadvertisement based on the characteristics or interests of the viewer.18. The system as recited in claim 13, further comprising instructionsthat, when executed by the at least one processor, cause the system toembed script into the hypertext markup language video player that causesa webpage associated with the advertisement to open upon interactionwith the advertisement.
 19. The system as recited in claim 13, furthercomprising instructions that, when executed by the at least oneprocessor, cause the system to analyze video content to determine themedia insertion location on the visible object surface within the videocontent by determining coordinates of the visible object surface in eachframe of the plurality of video frames of the video content forgenerating a tuple corresponding to the frame.
 20. The system as recitedin claim 19, further comprising instructions that, when executed by theat least one processor, cause the system to digitally augment the videocontent with the advertisement by inserting the advertisement into eachframe of the video content at the coordinates of the visible objectsurface within each frame of a plurality of video frames.